如果你還在,讓我們繼續看下去…..
在過了新手的刷課期之後,你可能就會覺得上課教的東西不一定是你想做的,所以你自然而然會開始上網找一些符合你心中理想的開發項目,但是事實上,沒有任何項目會真的完完全全貼合你的開發情況,有的時候你在Youtube上找到一堂你想要的分享實作,但偏偏人家用的是Mac而你用的是Windows,要下載的Packages就完全不同,影片剛打開五分鐘你就已經無法follow下去了,但最後找了一大圈又只有這個影片帶給你最需要的訊息,又不得不回來硬剛整個項目,項目還沒開始你就被一大堆報錯給擊垮了.....🥹
所以在自學開發的路上,舉一反三並整合各路說法就顯得相當的重要,你選擇某個開發者的內容作為主要支線,就要同時懂得怎麼去處理那些差異之處,把問題點做一些"D&C(Divde and Conquer)"顯得相當重要,如果你碰到的是Mac和Windows差異的問題,就要懂得聚焦在這個問題上,先把問題解決了,再接回原來的課程上,重點永遠都不在於一步一步跟著做,而是懂得了解為什麼要這麼做?有沒有取代的方法?該怎麼定義這個問題?如何整合各路彼此矛盾的說法等......
除了會碰到開發者使用的堆棧和你有差異之外,另外的問題就是除了開發者所分享的東西之外,你可能還需要疊加更多的開發才能夠真正達到開發的需求。基於教學的目的,通常分享者在分享開發時,都會聚焦在一個重點上,在這個重點之外的內容,你可能就要再找找同一個分享者有沒有提到後續或是前段的開發,如果沒有的話,你就要在現在的基礎上再向外拓展你的開發項目,研究看看和目前開發項目可以搭得上的技術組合是什麼?該怎麼銜接?
處理過時技術則是另外一個大難題,有的時候甚至直接宣告整個項目的死刑!
通常在你研究要使用什麼技術的時候,你就會注意到哪些技術項目已經慢慢被淘汰了,但在之後的開發歷程中,因為你打算借鑒他們的開發項目時,做到一半的時候你才發現當中使用的一個技術堆棧已經過時,而這將導致整個項目推倒重來時,就要懂的適時停損,通常一個技術項目都不會同時存在,同時都會有好幾個替代方案,而且往往通常不會只有你碰到這個問題,這個時候多上網去看一下別人碰到這個問題是怎麼處理的,是怎麼過渡到其他技術上去的。
此外,在處理完技術替換的問題之後,一樣要回到怎麼繼續讓你的專案繼續下去的問題,如果替換的技術會使得你所借鑒的開發呈現大幅度的替換的時候,有時候你可能就需要果斷放棄整個項目,或者重新設計你對於借鑑項目的範圍,甚至是銜接到其他類似的開發項目上,力求整個專案的完成為最高指導原則。
新手小白的開發實在是痛點滿滿,從一開始的VScode怎麼用、Postman是在幹什麼的?終端機指令要怎麼下?要下載什麼packages?等等,每個痛點可能都需要另開一頁記事本,上網查一下重點和做一下筆記,開發時間點往往比你想像中長的很多很多,甚至是永無止境......
設定合理的學習時程,可以讓你在長期的開發旅程中,得到適時的正向回饋,讓你不會有一種自己一直是一個局外人的感覺,而隨著完成的項目一個一個的累積之後,你就開始會獲得越來越多的信心,並且會產生一種求知慾,來拓展你的知識範圍,以及許多更細節與底層的知識。
至於設定時間同樣也是相當重要,比如說利用一個週末做出一個項目,而這個項目當中只有一兩個知識點是之前不懂的,在時間線的壓力之下,你隱隱的就會預期在時間點內完成後所帶來的成就感與滿足感,能夠幫助你碰到一些小困難(?)就想躺下來滑個手機之類的。
隨著時代的演進,各種AI的工具幫助開發者寫程式的過程,真的是有大大提升寫程式過程的爽感和滿足感,因此,對開發有興趣的朋友,真的不要錯過這個最美好的時代(?)!
AI工具的出現,便有許多人認為學習程式已經沒有價值了,但事實上,我個人認為現在才是學習程式最美好的時代(?)因,雖然AI可以很快拋出答案給我們,這只代表在一些很具體且明確是事情上有了更好的工具,省去了我們一個一個嘗試的時間,這其實是代表了我們更有機會把自己從這些瑣碎的開發枝節中解脫,讓我們以一種更全局的觀點來進行開發,建構出從前端、後端甚至是雲端的開發可能性,對於一個靠技術做出來的商品賺錢的人是好事,開發者更應該朝向商品的開發思維前進,更進一步去主導自己的開發項目,Let's kill ...?
參考資料: Tab Tracker - https://github.com/codyseibert/tab-tracker